package com.wondertek.service.service.business;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wondertek.service.dto.app.req.RentalListReq;
import com.wondertek.service.dto.app.res.RentalListRes;
import com.wondertek.service.dto.business.req.RentalDeviceAddReq;
import com.wondertek.service.dto.business.req.RentalFindRdReq;
import com.wondertek.service.dto.business.req.RentalPostponeReq;
import com.wondertek.service.dto.business.req.RentalRoomDeviceReq;
import com.wondertek.service.dto.business.res.*;
import com.wondertek.service.entity.business.RentalDevicePo;
import jakarta.servlet.http.HttpServletResponse;

import java.util.List;

/**
 * @author wangyu
 */
public interface RentalService extends IService<RentalDevicePo> {

    /**
     * 租赁管理查询
     *
     * @param req
     * @return
     */
    Page<RentalListRes> findRentalList(RentalListReq req);


    void findRentalListExport(RentalListReq req, HttpServletResponse response);

    /**
     * 查询分区租赁、设备租赁
     *
     * @return
     */
    Page<RentalRoomDeviceRes> findRentalRoomDevice(RentalRoomDeviceReq req);


    /**
     * 添加租赁信息
     *
     * @param req
     */
    void inertRentalDevice(RentalDeviceAddReq req);

    /**
     * 查询所有点位
     *
     * @param id         点位或设备id
     * @param type       1站点 2设备 3分区
     * @param rentalType 1:分区 2:设备
     * @return
     */
    List<RentalKvRes> findAllSite(String id, Integer type, Integer rentalType);

    /**
     * 查询站点下还未租赁的分区/设备
     *
     * @param req
     * @return
     */
    List<?> findAllRoomBySiteId(RentalFindRdReq req);

    /**
     * 延期
     *
     * @param req
     */
    void postpone(RentalPostponeReq req);

    /**
     * 结束服务
     *
     * @param rentalId
     */
    void endService(String rentalId);

    /**
     * 删除租赁
     *
     * @param rentalId
     */
    void delById(String rentalId);
}
